<?php

namespace services\sys;

use api\modules\common\services\UploadService;
use common\components\Service;
use common\models\sys\SysFile;
use Yii;


/**
 * Class SysFileService
 * @package common\services\sys
 */
class SysFileService extends Service
{
    /**
     * 查询文件
     * @param string $site
     * @param string $module
     * @param string $file
     * @return SysFile|null
     */
    public static function getSysFile(string $site, string $module, string $file): ?SysFile
    {
        return SysFile::findOne([
            'site' => $site,
            'module' => $module,
            'file' => $file,
        ]);
    }

    /**
     * 更新文件
     * @param string $site
     * @param string $module
     * @param string|array $newFile
     * @param string|array|null $oldFile
     * @return void
     * @throws \Exception
     */
    public static function editFile(string $site, string $module, $newFile, $oldFile = null): void
    {
        if (is_string($newFile) && is_string($oldFile) && $newFile == $oldFile) {
            return;
        }
        if ($newFile) {
            UploadService::move([
                'site' => $site,
                'module' => $module,
                'file' => is_array($newFile) ? $newFile : [$newFile],
            ]);
        }
        if ($oldFile) {
            UploadService::delete([
                'site' => $site,
                'module' => $module,
                'file' => is_array($oldFile) ? $oldFile : [$oldFile],
            ]);
        }
    }
}